
package logicBusiness;


import DAO.AreaDao;
import models.Area;
import java.util.List;
import javax.persistence.*;
import models.Asignatura;

public class AreaBL {

    private int ok = 0;

    public int crearArea(String nombreArea, String descripcionArea) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);

        em.getTransaction().begin();
        Area ar = dao.crearArea(nombreArea, descripcionArea);
        em.getTransaction().commit();
        em.close();
        emf.close();
        if (ar == null) {
            ok = 0;
        }
//        else if (ar.getNombreArea().equals(nombreArea)) {
//            ok = 1;
//        }

        return ok;
    }

    public Area instanciarArea(Object objeto) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        em.getTransaction().begin();
        Area ar = dao.intanciarArea(objeto);
        em.getTransaction().commit();
        em.close();
        emf.close();
        return ar;
    }

    public void borrarArea(Integer idArea) {
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        em.getTransaction().begin();
        dao.borrarArea(idArea);
        em.getTransaction().commit();
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
    }


    public int encontrarArea(Integer idArea) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        Area ar = dao.encontrarArea(idArea);
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        if (ar == null) {
            ok = 0;
        } else if (ar.getIdArea().equals(idArea)) {
            ok = 1;
        }
        return ok;

    }

    public int encontrarArea(String nombreArea) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        Area ar = dao.encontrarArea(nombreArea);
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        if (ar == null) {
            ok = 0;
        }
//        else if (ar.getNombreArea().equals(nombreArea)) {
//            ok = ar.getId();
//        }
        return ok;

    }

    public Area consultarArea(String nombreArea) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        Area ar = dao.encontrarArea(nombreArea);
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        return ar;
    }

        public int actualizarArea(String nombreAreaAntiguo,String nombreAreaNuevo, String descripcionArea) {
        // find an user
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        em.getTransaction().begin();
        Area ar = dao.actualizarArea(nombreAreaAntiguo,nombreAreaNuevo, descripcionArea);
        em.getTransaction().commit();
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        if (ar == null) {
            ok = 0;
        }
//        else if (ar.getNombreArea().equals(nombreAreaNuevo) && ar.getDescripcionArea().equals(descripcionArea)) {
//            ok = 1;
//        }
        return ok;

    }

    public List consultarAreas() {

        List results;
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        results = dao.encontrarAreas();
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        return results;
    }

       public List consultarAreasId() {
        List results;
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        results = dao.encontrarAreasId();
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        return results;
    }
            public List<Asignatura> consultarAreasConsulta(String nombreArea) {
        List<Asignatura> results;
        EntityManagerFactory emf =
                Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        AreaDao dao = new AreaDao(em);
        results = dao.encontrarAreasConsulta(nombreArea);
        em.close(); //quitar cuando se tenga montado el serv
        emf.close();//quitar cuando se tenga montado el serv
        return results;
    }


    public void persist(Object object) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("sischoolPU");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        try {
            em.persist(object);
            em.getTransaction().commit();
        } catch (Exception e) {
            e.printStackTrace();
            em.getTransaction().rollback();
        } finally {
            em.close();
        }
    }
}


